{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "# Cadenas (Strings)\n",
    "\n",
    "Temas:\n",
    "1. Cómo conseguir una cadena\n",
    "2. Interpolación de cadenas\n",
    "3. Concatenación de cadenas"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Cómo conseguir una cadena\n",
    "\n",
    "Enclose your characters in \" \" or \"\"\" \"\"\"!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "s1 = \"Yo soy una cadena.\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "s2 = \"\"\"Yo también soy una cadena. \"\"\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Existen algunas diferencias funcionales entre expresas cadenas con una sola y triple comillas. <br>\n",
    "Una diferencia es que en la segunda opción puedes usar comillas dentro de tu cadena."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "\"Aquí me sale un \"error\" porque es ambiguo dónde se acaba la cadena. \""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "\"\"\"Mira Mamá, sin \"errors\"!!! \"\"\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Ojo, '' define a un caracter, ¡ NO una cadena!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "typeof('a')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "'Esto va a dar un error'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "NOTA: En Julia todas las cadenas por default son del tipo UTF-8. Esto significa que podemos usar nuestros querídisimos acentos del habla hispana y nuestros signos de apertura de interrogación sin miedo a que nuestro código no corra en una máquina ajena. ¡Inténtalo!"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Interpolación de cadenas\n",
    "\n",
    "Podemos usar el símbolo $ para insertar variables existentes a una cadena y para evaluar expresiones en una cadena. <br>\n",
    "Abajo hay un ejemplo con información súmamente sensible."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "nombre = \"Jane\"\n",
    "num_dedos = 10\n",
    "num_dedos_de_los_pies = 10\n",
    "\n",
    "println(\"Hola, me llamo $nombre.\")\n",
    "println(\"Yo tengo $num_dedos dedos y $num_dedos_de_los_pies. ¡Esos son $(num_dedos + num_dedos_de_los_pies) dígitos en total!!\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Concatenación de cadenas\n",
    "\n",
    "¡Abajo hay tres maneras de concatenar cadenas! <br><br>\n",
    "La primera es usando la función de `string()` <br>\n",
    "`string()` convierte no-cadenas en cadenas."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "string(\"¿Cuántos gatos \", \"son demasiados?\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "string(\"No lo sé, pero \", 10, \" son muy pocos.\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can also use `*` or string interpolation!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "s3 = \"¿Cuántos gatos \";\n",
    "s4 = \"son demasiados?\";"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "s3*s4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "\"$s3$s4\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Ejercicios\n",
    "\n",
    "2.1 Crea una cadena que diga \"hola\" 1000 veces."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "2.2 Agrega dos números dentro de una cadena."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Julia 0.6.1",
   "language": "julia",
   "name": "julia-0.6"
  },
  "language_info": {
   "file_extension": ".jl",
   "mimetype": "application/julia",
   "name": "julia",
   "version": "0.6.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
